package com.yss.reportworld.domain.arrwrap;

import java.util.Date;

import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.yss.common.core.annotation.ExcelValid;
import com.yss.common.core.utils.easyexecl.DateConverter;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import com.yss.common.core.web.domain.BaseEntity;
import org.springframework.stereotype.Component;

/**
 * 报配置-报基本信息对象 rw_db_tp_rep_basic_info
 *
 * @author yss
 * @date 2023-07-14
 */
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("rw_db_tp_rep_basic_info")
@Component("TpRepBasicInfo")
public class TpRepBasicInfo extends Model<TpRepBasicInfo> {

    /**
     * 技术主键
     */
    @ExcelProperty("ID")
    @TableId("ID")
    private String id;

    /**
     * 报表名称
     */
    @ExcelProperty("REPORT_NAME")
    @TableField("REPORT_NAME")
    @ExcelValid(message = "【TP_REP_BASIC_COL_MODEL】【REPORT_NAME】不能为空")
    private String reportName;

    /**
     * 报表类型(0:固定表格;1:明细表格;2:分组明细表格)
     */
    @ExcelProperty("REPORT_TYPE")
    @TableField("REPORT_TYPE")
    @ExcelValid(message = "【TP_REP_BASIC_COL_MODEL】【REPORT_TYPE】不能为空")
    private String reportType;

    /**
     * 报表区域化基本参数
     */
    @ExcelProperty("REPORT_FRAG")
    @TableField("REPORT_FRAG")
    @ExcelValid(message = "【TP_REP_BASIC_COL_MODEL】【REPORT_FRAG】不能为空")
    private String reportFrag;

    /**
     * 报表结构唯一标识
     */
    @ExcelProperty("REPORT_MD5")
    @TableField("REPORT_MD5")
    @ExcelValid(message = "【TP_REP_BASIC_COL_MODEL】【REPORT_MD5】不能为空")
    private String reportMd5;

    /**
     * 报表对应结果表
     */
    @ExcelProperty("REPORT_OVER_NAME")
    @TableField("REPORT_OVER_NAME")
    @ExcelValid(message = "【TP_REP_BASIC_COL_MODEL】【REPORT_OVER_NAME】不能为空")
    private String reportOverName;

    /**
     * 报表参数值对应位置
     */
    @ExcelProperty("REPORT_PARAMS_POSITION")
    @TableField("REPORT_PARAMS_POSITION")
    private String reportParamsPosition;

    /**
     * 报表模板名称
     */
    @ExcelProperty("EXCEL_NAME")
    @TableField("EXCEL_NAME")
    @ExcelValid(message = "【TP_REP_BASIC_COL_MODEL】【EXCEL_NAME】不能为空")
    private String excelName;

    /**
     * 导出报表的Excel名称
     */
    @ExcelProperty("EXPORT_EXCEL_NAME")
    @TableField("EXPORT_EXCEL_NAME")
    @ExcelValid(message = "【TP_REP_BASIC_COL_MODEL】【EXPORT_EXCEL_NAME】不能为空")
    private String exportExcelName;

    /**
     * 报表右侧区域基本参数
     */
    @ExcelProperty("RIGHT_REPORT_FRAG")
    @TableField("RIGHT_REPORT_FRAG")
    @ExcelValid(message = "【TP_REP_BASIC_COL_MODEL】【RIGHT_REPORT_FRAG】不能为空")
    private String rightReportFrag;

    /**
     * 导出报表sheet名
     */
    @ExcelProperty("EXPORT_SHEET_NAME")
    @TableField("EXPORT_SHEET_NAME")
    private String exportSheetName;

    /**
     * 报表sheet索引
     */
    @ExcelProperty("SHEET_INDEX")
    @TableField("SHEET_INDEX")
    private Long sheetIndex;

    /**
     * 数据渲染方向（0：横向，1：纵向）
     */
    @ExcelProperty("RENDER_LAYOUT")
    @TableField("RENDER_LAYOUT")
    @ExcelValid(message = "【TP_REP_BASIC_COL_MODEL】【RENDER_LAYOUT】不能为空")
    private String renderLayout;

    /**
     * sheet是否锁定
     */
    @ExcelProperty("IS_SHEET_LOCKED")
    @TableField("IS_SHEET_LOCKED")
    @ExcelValid(message = "【TP_REP_BASIC_COL_MODEL】【IS_SHEET_LOCKED】不能为空")
    private String isSheetLocked;

    /**
     * sheet保护密码
     */
    @ExcelProperty("LOCK_PWD")
    @TableField("LOCK_PWD")
    private String lockPwd;

    /**
     * 合并方式（0：行合并，1：列合并，2：交叉合并）
     */
    @ExcelProperty("MERGE_TYPE")
    @TableField("MERGE_TYPE")
    private String mergeType;

    /**
     * 数据集编码
     */
    @ExcelProperty("DATASET_CODE")
    @TableField("DATASET_CODE")
    private String datasetCode;

    /**
     * 对数据进行分组，按组获取合并范围
     */
    @ExcelProperty("MERGE_GROUP_BY")
    @TableField("MERGE_GROUP_BY")
    private String mergeGroupBy;

    /**
     * 单元格数据模型
     */
    @ExcelProperty("CELL_DATA_MODEL")
    @TableField("CELL_DATA_MODEL")
    @ExcelValid(message = "【TP_REP_BASIC_COL_MODEL】【CELL_DATA_MODEL】不能为空")
    private String cellDataModel;
    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ExcelProperty(value = "CREATE_TIME", converter = DateConverter.class)
    @TableField("CREATE_TIME")
    private Date createTime;
    /**
     * 1表示固定报表body区域样式跟随模板样式,不配置表示样式跟随系统代码设置
     */
    @ExcelProperty("NO_RENDER")
    @TableField("NO_RENDER")
    private String noRender;
}
